50674b
@@ -18,6 +18,7 @@
package org.apache.camel.component.file;
 
 import java.io.File;
 import java.util.Date;
+import java.util.Map;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.util.FileUtil;
@@ -93,10 +94,25 @@
public class GenericFile<T>  {
      * Bind this GenericFile to an Exchange
      */
     public void bindToExchange(Exchange exchange) {
+        Map<String, Object> headers;
+
         exchange.setProperty(FileComponent.FILE_EXCHANGE_FILE, this);
-        GenericFileMessage<T> in = new GenericFileMessage<T>(this);
-        exchange.setIn(in);
-        populateHeaders(in);
+        GenericFileMessage<T> msg = new GenericFileMessage<T>(this);
+        if (exchange.hasOut()) {
+            headers = exchange.getOut().hasHeaders() ? exchange.getOut().getHeaders() : null;
+            exchange.setOut(msg);
+        } else {
+            headers = exchange.getIn().hasHeaders() ? exchange.getIn().getHeaders() : null;
+            exchange.setIn(msg);
+        }
+
+        // preserve any existing (non file) headers, before we re-populate headers
+        if (headers != null) {
+            msg.setHeaders(headers);
+            // remove any file related headers, as we will re-populate file headers
+            msg.removeHeaders("CamelFile*");
+        }
+        populateHeaders(msg);
     }
 
     /**
